<?php
namespace app\index\controller;
use app\index\controller\Base;
use app\index\model\Grade as GradeModel;
use app\index\model\Teacher;
use think\Request;

class Grade extends Base{
	//班级列表
	public function gradeList(){
		// 获取所有班级表数据
		$grade=GradeModel::all();

		// 获取记录数量
		$count=GradeModel::count();

		// 遍历grade表数据
		foreach ($grade as $value) {
			$data=[
				'id'=>$value->id,
				'name'=>$value->name,
				'length'=>$value->length,
				'price'=>$value->price,
				'status'=>$value->status,
				'create_time'=>$value->create_time,
				// 用关联方法teacher属性访问teacher表中的数据
				'teacher'=>isset($value->teacher->name)?$value->teacher->name:'<span style="color:red">未分配</span>'
			];
			// 每次关联查询结果保存到gradeList中
			$gradeList[]=$data;
		}

		// 给页面分配数据
		$this->assign('gradeList',$gradeList);
		$this->assign('count',$count);

		return $this->fetch();
	}

	// 状态启用和停用
	public function setStatus(Request $request){
		/**
		 * 1.获取当前id
		 * 2.根据id获取数据
		 * 3.判断状态更新状态
		 */

		// 获取当前id
		$grade_id=$request->param('id');

		// 获取数据
		$result=GradeModel::get($grade_id);

		// 判断状态,更新状态
		if($result->getData('status')==1){
			GradeModel::update(['status'=>0],['id'=>$grade_id]);
		}else{
			GradeModel::update(['status'=>1],['id'=>$grade_id]);
		}
	}

	// 渲染编辑班级界面
	public function gradeEdit(Request $request){
		/**
		 * 1.获取当前id
		 * 2.根据id获取数据
		 * 3.获取关联教师数据
		 * 4.给模板赋值
		 * 5.渲染页面
		 */

		// 获取当前班级id
		$grade_id=$request->param('id');

		// 查询数据
		$result=GradeModel::get($grade_id);

		// 获取关联班级教师姓名
		$result->teacher=$result->teacher->name;

		// 给当前模板赋值
		$this->assign('grade_info',$result);

		// 渲染模板
		return $this->fetch();
	}

	// 班级更新
	public function doEdit(Request $request){
		/**
		 * 1.获取表单数据，排除关联字段
		 * 2.设置更新条件
		 * 3.更新数据
		 * 4.设置返回数据
		 * 5.检查更新结果
		 * 6.返回状态
		 */

		// 获取表单数据，排除关联字段
		$data=$request->except('teacher');

		// 设置更新条件
		$condition=['id'=>$data['id']];

		// 更新数据
		$result=GradeModel::update($data,$condition);

		// 设置返回数据
		$status=0;
		$message='更新失败';

		// 检查更新结果
		if($result==true){
			$status=1;
			$message='更新成功';
		}

		// 返回状态
		return ['status'=>$status,'message'=>$message];
	}

	// 班级软删除
	public function deleteGrade(Request $request){
		$user_id=$request->param('id');
		GradeModel::update(['is_delete'=>1],['id'=>$user_id]);
		GradeModel::destroy($user_id);
	}

	// 批量恢复删除
	public function unDelete(){
		GradeModel::update(['delete_time'=>NULL],['is_delete'=>1]);
	}

	// 添加班级界面渲染
	public function gradeAdd(){
		return $this->fetch();
	}

	// 添加班级
	public function doAdd(Request $request){
		/**
		 * 1.获取表单数据
		 * 2.数据库插入数据
		 * 3.设置返回数据的初始值
		 * 4.检查数据插入结果
		 * 5.返回数据给前端
		 */

		// 获取数据
		$data=$request->param();

		// 插入数据
		$result=GradeModel::create($data);

		// 设置返回数据初始值
		$status=0;
		$message='添加失败';

		// 检查数据插入结果
		if($result==true){
			$status=1;
			$message='添加成功';
		}

		return ['status'=>$status,'message'=>$message];
	}

}